rodrigocpdosreis@gmail.com
Universidade Federal do Rio Grande do Sul
Instituto de Matemática e Estatística
Departamento de Estatística\[ X_D = X_A\times X_B\times X_C. \]
\[ D^2 = ABCD \]
ou
\[ I = ABCD \]
em que \(I\) representa uma coluna de sinais positivos e é a identidade multiplicativa para produtos elemento a elemento de colunas de níveis codificados de factores.
\[ A(I) = A(ABCD) \]
ou
\[ A = BCD \]
R com o pacote FrF2 (Fractional Factorial Designs with 2-Level Factors).library(FrF2)
# help(package = "FrF2")
design <- FrF2(nruns = 8,
nfactors = 4,
generators = "ABC",
randomize = FALSE)
design## A B C D
## 1 -1 -1 -1 -1
## 2 1 -1 -1 1
## 3 -1 1 -1 1
## 4 1 1 -1 -1
## 5 -1 -1 1 1
## 6 1 -1 1 -1
## 7 -1 1 1 -1
## 8 1 1 1 1
## class=design, type= FrF2.generators
set.seed(2018)
design.random <- FrF2(nruns = 8,
nfactors = 4,
generators = "ABC",
randomize = TRUE)
design.random## A B C D
## 1 -1 1 -1 1
## 2 1 1 -1 -1
## 3 -1 -1 -1 -1
## 4 1 -1 1 -1
## 5 1 -1 -1 1
## 6 -1 -1 1 1
## 7 -1 1 1 -1
## 8 1 1 1 1
## class=design, type= FrF2.generators
design.info(design) # Função do pacote DoE.base## $type
## [1] "FrF2.generators"
##
## $nruns
## [1] 8
##
## $nfactors
## [1] 4
##
## $factor.names
## $factor.names$A
## [1] -1 1
##
## $factor.names$B
## [1] -1 1
##
## $factor.names$C
## [1] -1 1
##
## $factor.names$D
## [1] -1 1
##
##
## $generators
## [1] "D=ABC"
##
## $aliased
## $aliased$legend
## [1] "A=A" "B=B" "C=C" "D=D"
##
## $aliased$main
## character(0)
##
## $aliased$fi2
## [1] "AB=CD" "AC=BD" "AD=BC"
##
##
## $FrF2.version
## [1] "1.7-2"
##
## $replications
## [1] 1
##
## $repeat.only
## [1] FALSE
##
## $randomize
## [1] FALSE
##
## $seed
## NULL
##
## $creator
## FrF2(nruns = 8, nfactors = 4, generators = "ABC", randomize = FALSE)
y <- runif(8, 0, 1)
aliases( lm( y~ (.)^3, data = design))##
## A = B:C:D
## B = A:C:D
## C = A:B:D
## D = A:B:C
## A:B = C:D
## A:C = B:D
## A:D = B:C
library(FrF2)
soup <- FrF2(nruns = 16,
nfactors = 5, generators = "ABCD",
factor.names = list(Ports = c(1, 3),
Temp = c("Cool", "Ambient"),
MixTime = c(60, 80),
BatchWt = c(1500, 2000),
delay = c(7, 1)),
randomize = FALSE)
soup## Ports Temp MixTime BatchWt delay
## 1 1 Cool 60 1500 1
## 2 3 Cool 60 1500 7
## 3 1 Ambient 60 1500 7
## 4 3 Ambient 60 1500 1
## 5 1 Cool 80 1500 7
## 6 3 Cool 80 1500 1
## 7 1 Ambient 80 1500 1
## 8 3 Ambient 80 1500 7
## 9 1 Cool 60 2000 7
## 10 3 Cool 60 2000 1
## 11 1 Ambient 60 2000 1
## 12 3 Ambient 60 2000 7
## 13 1 Cool 80 2000 1
## 14 3 Cool 80 2000 7
## 15 1 Ambient 80 2000 7
## 16 3 Ambient 80 2000 1
## class=design, type= FrF2.generators
y <- c(1.13, 1.25, .97, 1.70, 1.47, 1.28, 1.18, .98, .78,
1.36, 1.85, .62, 1.09, 1.10, .76, 2.10)
library(DoE.base)
soup <- add.response(soup , y)
soup## Ports Temp MixTime BatchWt delay y
## 1 1 Cool 60 1500 1 1.13
## 2 3 Cool 60 1500 7 1.25
## 3 1 Ambient 60 1500 7 0.97
## 4 3 Ambient 60 1500 1 1.70
## 5 1 Cool 80 1500 7 1.47
## 6 3 Cool 80 1500 1 1.28
## 7 1 Ambient 80 1500 1 1.18
## 8 3 Ambient 80 1500 7 0.98
## 9 1 Cool 60 2000 7 0.78
## 10 3 Cool 60 2000 1 1.36
## 11 1 Ambient 60 2000 1 1.85
## 12 3 Ambient 60 2000 7 0.62
## 13 1 Cool 80 2000 1 1.09
## 14 3 Cool 80 2000 7 1.10
## 15 1 Ambient 80 2000 7 0.76
## 16 3 Ambient 80 2000 1 2.10
## class=design, type= FrF2.generators
soupc <- FrF2(nruns = 16,
nfactors = 5,
generators = "ABCD",
randomize = FALSE)
soupc <- add.response(soupc, y)aliases(lm( y ~ (.)^4, data = soupc))##
## A = B:C:D:E
## B = A:C:D:E
## C = A:B:D:E
## D = A:B:C:E
## E = A:B:C:D
## A:B = C:D:E
## A:C = B:D:E
## A:D = B:C:E
## A:E = B:C:D
## B:C = A:D:E
## B:D = A:C:E
## B:E = A:C:D
## C:D = A:B:E
## C:E = A:B:D
## D:E = A:B:C
mod1 <- lm( y ~ (.)^2, data = soup)
summary(mod1)##
## Call:
## lm.default(formula = y ~ (.)^2, data = soup)
##
## Residuals:
## ALL 16 residuals are 0: no residual degrees of freedom!
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.22625 NA NA NA
## Ports1 0.07250 NA NA NA
## Temp1 0.04375 NA NA NA
## MixTime1 0.01875 NA NA NA
## BatchWt1 -0.01875 NA NA NA
## delay1 0.23500 NA NA NA
## Ports1:Temp1 0.00750 NA NA NA
## Ports1:MixTime1 0.04750 NA NA NA
## Ports1:BatchWt1 0.01500 NA NA NA
## Ports1:delay1 0.07625 NA NA NA
## Temp1:MixTime1 -0.03375 NA NA NA
## Temp1:BatchWt1 0.08125 NA NA NA
## Temp1:delay1 0.20250 NA NA NA
## MixTime1:BatchWt1 0.03625 NA NA NA
## MixTime1:delay1 -0.06750 NA NA NA
## BatchWt1:delay1 0.15750 NA NA NA
##
## Residual standard error: NaN on 0 degrees of freedom
## Multiple R-squared: 1, Adjusted R-squared: NaN
## F-statistic: NaN on 15 and 0 DF, p-value: NA
modc <- lm(y ~ (.)^2, data = soupc)
library(daewr)
LGB(coef(modc)[-1], rpt = FALSE)delay <- as.numeric(sub(-1, 7, soup$delay))
temp <- soup$Temp
interaction.plot(delay, temp, soup$y,
type = "b", pch = c(24,18,22),
leg.bty = "o",
main = "Interaction Plot for Mixing Temperature by Delay time",
xlab = "Delay Time (days)",
ylab = "Average S.D. Fill Weight")IAPlot(soup, sel=c(2,4,5), abbrev=7)R usando FrF2 pode ser usado para gerar o delineamento.# library(FrF2)
frac <- FrF2(nruns = 8,
nfactors = 6,
generators = c("AB", "AC", "BC"))
frac## A B C D E F
## 1 -1 1 -1 -1 1 -1
## 2 1 1 -1 1 -1 -1
## 3 -1 -1 1 1 -1 -1
## 4 1 -1 1 -1 1 -1
## 5 1 -1 -1 -1 -1 1
## 6 -1 1 1 -1 -1 1
## 7 -1 -1 -1 1 1 1
## 8 1 1 1 1 1 1
## class=design, type= FrF2.generators
\[ I = ABD = ACE = BCF = BCDE = ACDF = ABEF = DEF \]
y <- runif(8, 0, 1)
aliases( lm( y~ (.)^6, data = frac))##
## A = B:D = C:E = B:E:F = C:D:F = A:B:C:F = A:D:E:F = A:B:C:D:E
## B = C:F = A:E:F = C:D:E = A:B:C:E = B:D:E:F = A:B:C:D:F = A:D
## C = B:F = A:D:F = B:D:E = A:B:C:D = C:D:E:F = A:B:C:E:F = A:E
## D = E:F = A:C:F = B:C:E = A:C:D:E = B:C:D:F = A:B:D:E:F = A:B
## E = D:F = A:B:F = B:C:D = A:B:D:E = B:C:E:F = A:C:D:E:F = A:C
## F = B:C = D:E = A:B:E = A:C:D = A:B:D:F = A:C:E:F = B:C:D:E:F
## A:F = B:E = C:D = A:B:C = A:D:E = B:D:F = C:E:F = A:B:C:D:E:F
\[ I = ABCE = ABDF = CDEF \]
\[ I = ABE = ACDF = BCDEF \]
RFrF2 no pacote FrF2 do R pode criar delineamentos de aberração mínima.FrF2, como no exemplo anterior, a função FrF2 selecionará automaticamente o conjunto de geradores que resultarão em um delineamento de aberração mínima.Rlibrary(FrF2)
des1 <- FrF2( 16, 8 )
y <- runif( 16, 0, 1 )
library(DoE.base)
generators(des1)## $generators
## [1] "E=ABC" "F=ABD" "G=ACD" "H=BCD"
aliases( lm( y ~ (.)^3, data = des1) )##
## A = B:C:E = B:D:F = B:G:H = C:D:G = C:F:H = D:E:H = E:F:G
## B = A:C:E = A:D:F = A:G:H = C:D:H = C:F:G = D:E:G = E:F:H
## C = A:B:E = A:D:G = A:F:H = B:D:H = B:F:G = D:E:F = E:G:H
## D = A:B:F = A:C:G = A:E:H = B:C:H = B:E:G = C:E:F = F:G:H
## E = A:B:C = A:D:H = A:F:G = B:D:G = B:F:H = C:D:F = C:G:H
## F = A:B:D = A:C:H = A:E:G = B:C:G = B:E:H = C:D:E = D:G:H
## G = A:B:H = A:C:D = A:E:F = B:C:F = B:D:E = C:E:H = D:F:H
## H = A:B:G = A:C:F = A:D:E = B:C:D = B:E:F = C:E:G = D:F:G
## A:B = C:E = D:F = G:H
## A:C = B:E = D:G = F:H
## A:D = B:F = C:G = E:H
## A:E = B:C = D:H = F:G
## A:F = B:D = C:H = E:G
## A:G = B:H = C:D = E:F
## A:H = B:G = C:F = D:E
RFrF2 também pode criar delineamentos com o máximo número de efeitos claros.FrF2(32,9) produz o delineamento de aberração mínima \(2^{9−4}\) que tem nove efeitos principais claros e oito interações claras de dois fatores.FrF2(32,9, MaxC2 = TRUE) produz um delineamento \(2^{9-4}\) que tem todos os nove efeitos principais e 15 interações claras de dois fatores.Rlibrary(FrF2)
culture <- FrF2( 16, generators = c("BCD", "ACD", "ABC", "ABD"), randomize = FALSE)
y1 <- c(5.75, 6.7, 11.12, 10.67, 4.92, 5.35, 2.81, 10.83, 6.08, 7.27, 9.68, 4.2, 3.9, 3.78, 11.57, 7.39)
culture <- add.response(culture, y1)
culture## A B C D E F G H y1
## 1 -1 -1 -1 -1 -1 -1 -1 -1 5.75
## 2 1 -1 -1 -1 -1 1 1 1 6.70
## 3 -1 1 -1 -1 1 -1 1 1 11.12
## 4 1 1 -1 -1 1 1 -1 -1 10.67
## 5 -1 -1 1 -1 1 1 1 -1 4.92
## 6 1 -1 1 -1 1 -1 -1 1 5.35
## 7 -1 1 1 -1 -1 1 -1 1 2.81
## 8 1 1 1 -1 -1 -1 1 -1 10.83
## 9 -1 -1 -1 1 1 1 -1 1 6.08
## 10 1 -1 -1 1 1 -1 1 -1 7.27
## 11 -1 1 -1 1 -1 1 1 -1 9.68
## 12 1 1 -1 1 -1 -1 -1 1 4.20
## 13 -1 -1 1 1 -1 -1 1 1 3.90
## 14 1 -1 1 1 -1 1 -1 -1 3.78
## 15 -1 1 1 1 1 -1 -1 -1 11.57
## 16 1 1 1 1 1 1 1 1 7.39
## class=design, type= FrF2.generators
Rmodf <- lm( y1 ~ (.)^2, data = culture)
summary(modf)##
## Call:
## lm.default(formula = y1 ~ (.)^2, data = culture)
##
## Residuals:
## ALL 16 residuals are 0: no residual degrees of freedom!
##
## Coefficients: (21 not defined because of singularities)
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 7.00125 NA NA NA
## A1 0.02250 NA NA NA
## B1 1.53250 NA NA NA
## C1 -0.68250 NA NA NA
## D1 -0.26750 NA NA NA
## E1 1.04500 NA NA NA
## F1 -0.49750 NA NA NA
## G1 0.72500 NA NA NA
## H1 -1.05750 NA NA NA
## A1:B1 -0.28375 NA NA NA
## A1:C1 0.49625 NA NA NA
## A1:D1 -1.09625 NA NA NA
## A1:E1 -0.39875 NA NA NA
## A1:F1 0.60875 NA NA NA
## A1:G1 0.29875 NA NA NA
## A1:H1 -0.05625 NA NA NA
## B1:C1 NA NA NA NA
## B1:D1 NA NA NA NA
## B1:E1 NA NA NA NA
## B1:F1 NA NA NA NA
## B1:G1 NA NA NA NA
## B1:H1 NA NA NA NA
## C1:D1 NA NA NA NA
## C1:E1 NA NA NA NA
## C1:F1 NA NA NA NA
## C1:G1 NA NA NA NA
## C1:H1 NA NA NA NA
## D1:E1 NA NA NA NA
## D1:F1 NA NA NA NA
## D1:G1 NA NA NA NA
## D1:H1 NA NA NA NA
## E1:F1 NA NA NA NA
## E1:G1 NA NA NA NA
## E1:H1 NA NA NA NA
## F1:G1 NA NA NA NA
## F1:H1 NA NA NA NA
## G1:H1 NA NA NA NA
##
## Residual standard error: NaN on 0 degrees of freedom
## Multiple R-squared: 1, Adjusted R-squared: NaN
## F-statistic: NaN on 15 and 0 DF, p-value: NA
Rlibrary(daewr)
cfs <- coef(modf)[2:16]
names <- names(cfs)
halfnorm(cfs, names, alpha = .25, refline = TRUE)## zscore= 0.0417893 0.1256613 0.2104284 0.2967378 0.3853205 0.4770404 0.5729675 0.6744898 0.7835004 0.9027348 1.036433 1.191816 1.382994 1.644854 2.128045effp= 0.0225 0.05625 0.2675 0.28375 0.29875 0.39875 0.49625 0.4975 0.60875 0.6825 0.725 1.045 1.0575 1.09625 1.5325
Rculture2 <- FrF2( 16, 5, factor.names = c("B", "C", "E", "G", "H"), randomize = FALSE)
y <- c(3.37, 3.55, 3.78, 2.81, 5.53, 10.43, 5.35, 11.57, 2.93, 7.23, 3.9, 10.83, 11.69, 10.59, 4.92, 7.39)
culture2 <- add.response( culture2, y )
culture2## B C E G H y
## 1 -1 -1 -1 -1 1 3.37
## 2 1 -1 -1 -1 -1 3.55
## 3 -1 1 -1 -1 -1 3.78
## 4 1 1 -1 -1 1 2.81
## 5 -1 -1 1 -1 -1 5.53
## 6 1 -1 1 -1 1 10.43
## 7 -1 1 1 -1 1 5.35
## 8 1 1 1 -1 -1 11.57
## 9 -1 -1 -1 1 -1 2.93
## 10 1 -1 -1 1 1 7.23
## 11 -1 1 -1 1 1 3.90
## 12 1 1 -1 1 -1 10.83
## 13 -1 -1 1 1 1 11.69
## 14 1 -1 1 1 -1 10.59
## 15 -1 1 1 1 -1 4.92
## 16 1 1 1 1 1 7.39
## class=design, type= FrF2
Rmoda <- lm(y ~ (.)^2, data = culture2)
summary(moda)##
## Call:
## lm.default(formula = y ~ (.)^2, data = culture2)
##
## Residuals:
## ALL 16 residuals are 0: no residual degrees of freedom!
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 6.61688 NA NA NA
## B1 1.43312 NA NA NA
## C1 -0.29812 NA NA NA
## E1 1.81687 NA NA NA
## G1 0.81813 NA NA NA
## H1 -0.09562 NA NA NA
## B1:C1 0.39813 NA NA NA
## B1:E1 0.12813 NA NA NA
## B1:G1 0.14188 NA NA NA
## B1:H1 -0.98938 NA NA NA
## C1:E1 -0.82812 NA NA NA
## C1:G1 -0.37688 NA NA NA
## C1:H1 -1.36062 NA NA NA
## E1:G1 -0.60438 NA NA NA
## E1:H1 0.37687 NA NA NA
## G1:H1 0.21313 NA NA NA
##
## Residual standard error: NaN on 0 degrees of freedom
## Multiple R-squared: 1, Adjusted R-squared: NaN
## F-statistic: NaN on 15 and 0 DF, p-value: NA
Rlibrary(daewr)
cfs <- coef(moda)[2:16]
effects <- cfs
names <- names(cfs)
halfnorm(cfs, names, alpha = .2, refline = FALSE)## zscore= 0.0417893 0.1256613 0.2104284 0.2967378 0.3853205 0.4770404 0.5729675 0.6744898 0.7835004 0.9027348 1.036433 1.191816 1.382994 1.644854 2.128045effp= 0.095625 0.128125 0.141875 0.213125 0.298125 0.376875 0.376875 0.398125 0.604375 0.818125 0.828125 0.989375 1.360625 1.433125 1.816875
RRR\[ I = ABD = ACE = BCF = DEF = BCDE = ACDF = ABEF \]
\[ I = -ABD = ACE = -BCF = DEF = -BCDE = ACDF = -ABEF \]
\[ I = ACE = DEF = ACDF \]
R)library(FrF2)
des <- FrF2(8, 6, generators = c("AB", "AC", "BC"), randomize = FALSE)
des## A B C D E F
## 1 -1 -1 -1 1 1 1
## 2 1 -1 -1 -1 -1 1
## 3 -1 1 -1 -1 1 -1
## 4 1 1 -1 1 -1 -1
## 5 -1 -1 1 1 -1 -1
## 6 1 -1 1 -1 1 -1
## 7 -1 1 1 -1 -1 1
## 8 1 1 1 1 1 1
## class=design, type= FrF2.generators
R)desa <- fold.design(des, columns = c(2)) # vetor de caracteres dá erro
desa## A B C fold D E F
## 1 -1 -1 -1 original 1 1 1
## 2 1 -1 -1 original -1 -1 1
## 3 -1 1 -1 original -1 1 -1
## 4 1 1 -1 original 1 -1 -1
## 5 -1 -1 1 original 1 -1 -1
## 6 1 -1 1 original -1 1 -1
## 7 -1 1 1 original -1 -1 1
## 8 1 1 1 original 1 1 1
## 9 -1 1 -1 mirror 1 1 1
## 10 1 1 -1 mirror -1 -1 1
## 11 -1 -1 -1 mirror -1 1 -1
## 12 1 -1 -1 mirror 1 -1 -1
## 13 -1 1 1 mirror 1 -1 -1
## 14 1 1 1 mirror -1 1 -1
## 15 -1 -1 1 mirror -1 -1 1
## 16 1 -1 1 mirror 1 1 1
## class=design, type= FrF2.generators.folded
R)desa <- fold.design(des, columns = c(4))
desa## A B C fold D E F
## 1 -1 -1 -1 original 1 1 1
## 2 1 -1 -1 original -1 -1 1
## 3 -1 1 -1 original -1 1 -1
## 4 1 1 -1 original 1 -1 -1
## 5 -1 -1 1 original 1 -1 -1
## 6 1 -1 1 original -1 1 -1
## 7 -1 1 1 original -1 -1 1
## 8 1 1 1 original 1 1 1
## 9 -1 -1 -1 mirror -1 1 1
## 10 1 -1 -1 mirror 1 -1 1
## 11 -1 1 -1 mirror 1 1 -1
## 12 1 1 -1 mirror -1 -1 -1
## 13 -1 -1 1 mirror -1 -1 -1
## 14 1 -1 1 mirror 1 1 -1
## 15 -1 1 1 mirror 1 -1 1
## 16 1 1 1 mirror -1 1 1
## class=design, type= FrF2.generators.folded
R)desa <- fold.design(des, columns = c(2,4))
desa## A B C fold D E F
## 1 -1 -1 -1 original 1 1 1
## 2 1 -1 -1 original -1 -1 1
## 3 -1 1 -1 original -1 1 -1
## 4 1 1 -1 original 1 -1 -1
## 5 -1 -1 1 original 1 -1 -1
## 6 1 -1 1 original -1 1 -1
## 7 -1 1 1 original -1 -1 1
## 8 1 1 1 original 1 1 1
## 9 -1 1 -1 mirror -1 1 1
## 10 1 1 -1 mirror 1 -1 1
## 11 -1 -1 -1 mirror 1 1 -1
## 12 1 -1 -1 mirror -1 -1 -1
## 13 -1 1 1 mirror -1 -1 -1
## 14 1 1 1 mirror 1 1 -1
## 15 -1 -1 1 mirror 1 -1 1
## 16 1 -1 1 mirror -1 1 1
## class=design, type= FrF2.generators.folded
R)desa <- fold.design(des, columns = 'full')
desa## A B C fold D E F
## 1 -1 -1 -1 original 1 1 1
## 2 1 -1 -1 original -1 -1 1
## 3 -1 1 -1 original -1 1 -1
## 4 1 1 -1 original 1 -1 -1
## 5 -1 -1 1 original 1 -1 -1
## 6 1 -1 1 original -1 1 -1
## 7 -1 1 1 original -1 -1 1
## 8 1 1 1 original 1 1 1
## 9 1 1 1 mirror -1 -1 -1
## 10 -1 1 1 mirror 1 1 -1
## 11 1 -1 1 mirror 1 -1 1
## 12 -1 -1 1 mirror -1 1 1
## 13 1 1 -1 mirror -1 1 1
## 14 -1 1 -1 mirror 1 -1 1
## 15 1 -1 -1 mirror 1 1 -1
## 16 -1 -1 -1 mirror -1 -1 -1
## class=design, type= FrF2.generators.folded
\[ y = (16,20; 52,85; 9,05; 31,1; 7,40; 9,90; 10,85; 48,75) \]